
$(function() { 	
	//查询条件状态下拉
    var select = $("#state"); 
    select.append("<option value='2' selected><span style='font-size:12px;'>全部</span></option>"); 
    select.append("<option value='1'><span style='font-size:12px;'>有效</span></option>"); 
    select.append("<option value='0'><span style='font-size:12px;'>失效</span></option>"); 
    
    initDeptTree();//初始化部门树
    initCheckbox();//初始化角色复选框
});

//顶部搜索
$('#search').on('click',function(){   
	$('#tb_user').bootstrapTable('refresh');
})
//查询条件重置
$('#reset').on('click',function(){   
	$("#srealname").val("");
	$("#sage").val("");
	$("#state").val("");
})

//部门、岗位初始化函数
function initSelect(sid,url,type){
	e=$("#"+sid);
	$.ajax({
        url :url,
        async : false,
        type : "post",
        dataType:'json',
        success : function(result) {
        	if (result.success) {
        		var datas = result.data;
        		e.find("option:not(:first)").remove();
        		for (var i=0;i<datas.length;i++) {
        			if(datas[i].deptId!='0'){
        				var id,text;
        				if(type=='d'){
        					id = datas[i].deptId;
        					text = datas[i].deptName;
        			    	e.selectpicker({width:162})//设置宽度
        				}else{
        					id = datas[i].postId;
        					text = datas[i].postName;	
        					e.selectpicker({width:265})
        				}
	        			e.append('<option value="' +id + '">' +text+ '</option>');
        			}
        		}
        		// 刷新select
    			e.selectpicker('refresh');
        	} else {
        		toastr.error('获取['+ parentId + ']信息失败，原因：' + result.errorMessage);
        	}
        }
	});
}



//点击部门下拉框级联根据部门查询岗位
$("#did").on("change",function(e){
	var dept=$("#did").val();
    //重置岗位下拉框 否则会出现重复   无解
    if($("#addModal select[name='postId']")[0].options){//重置，否则出现重复
    	$("#addModal select[name='postId']")[0].options.length = 0;
    	$("#addModal select[name='postId']").selectpicker('refresh');
    }
	initSelect('postId',"/post/getPostsByDeptId?deptId="+dept,'p')
})


$("#headPic").fileinput({                
	language: 'zh', //设置语言
    uploadUrl: "/file", //上传的地址
    allowedFileExtensions: ['jpg','png','jpeg','png'],//接收的文件后缀
    showPreview:true,
    showBrowse:true,
    showRemove:true,
    showCancel:true,
    showUpload: false, //是否显示上传按钮
    showCaption: true,//是否显示标题
    overwriteInitial:true,
    dropZoneEnabled: false,//是否显示拖拽区域
    maxImageWidth: 500,//图片的最大宽度
    maxImageHeight: 500,//图片的最大高度
    maxFileSize: 50,//单位为kb，如果为0表示不限制文件大小
    enctype: 'multipart/form-data',
    validateInitialCount: false,
    previewFileIcon: "<i class='glyphicon glyphicon-king'></i>",
    msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}！",
    fileActionSettings : {
        showUpload: false,
        //showRemove: false,
        showZoom:false
    }
})
//bootstrap-table初始化
$(function () {
    //表格的初始化
    $('#tb_user').bootstrapTable({
        //data: data,                         //直接从本地数据初始化表格
        method: 'get',                      //请求方式（*）
        url:"/user/list",
        contentType: "application/x-www-form-urlencoded",
        dataType: 'json',
        toolbar: '#toolbar',                //工具按钮用哪个容器
        pagination: true,
        striped: true,                      //是否显示行间隔色
        cache: true,                       //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
        pagination: true,                   //是否显示分页（*）
        sortable: false,                    //是否启用排序
        pageSize: 8,                       //每页的记录行数（*）
        pageNumber:1,						//默认第一页
        sortOrder: "asc",                   //排序方式
        height: 492,
         queryParams: function (params) {
        	 var param = {  
        			offset: params.offset,    
        			limit: params.limit,
        			page: (params.offset / params.limit) + 1,   //当前页码
                     sortName: "createTime",
                     sortOrder: "asc",
                     realname:$("#srealname").val(),  //这两个是上面模糊查询input的值
                	 age:$("#sage").val(),
                	 state:$("#state").val(),
                	 /*email:$("#email").val(),*/
                	 deptId:$("#deptId").val(),
                 };    
			return param;
        },                                  //传递参数（*）
        sidePagination: "server",           //分页方式：client客户端分页，server服务端分页（*）
        paginationLoop: true,
        pageList: [10, 25, 50],        //可供选择的每页的行数（*）
        search: false,                       //是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
        strictSearch: true,
        showColumns: true,                  //是否显示所有的列
        showRefresh: true,                  //是否显示刷新按钮
        showSearch: true,
        minimumCountColumns: 2,             //最少允许的列数
        clickToSelect: true,                //是否启用点击选中行
        uniqueId: "uid",                     //每一行的唯一标识，一般为主键列
        showToggle: false,                    //是否显示详细视图和列表视图的切换按钮
        cardView: false,                    //是否显示详细视图
        detailView: true,                   //是否显示父子表
		selectItemName: 'parentItem',
        responseHandler: function (res) {	//结果集处理
            return eval(res.data)
        },
        onLoadSuccess: function(data){    
            console.log("树形结构加载成功");  
        },
        //加载失败时执行  
        onLoadError: function(status){  
            console.log("加载数据失败"+status);  
        },
        //注册加载子表的事件。注意下这里的三个参数！
        onExpandRow: function (index, row, $detail) {
            InitSubTable(index, row, $detail);
        },
       columns: [
       [{
           checkbox: true,
           colspan: 1,
           valign:"middle",
           rowspan: 2,
       },{
           field: 'uid',
           title: '用户ID',
           visible:false,
           colspan: 1,
           rowspan: 2,
           valign:"middle",
           align:'center',
       }, {
           field: 'username',
           title: '账号',
           colspan: 1,
           rowspan: 2,
           valign:"middle",
           align:'center',
       }, {
           field: 'realname',
           title: '昵称',
           colspan: 1,
           rowspan: 2,
           valign:"middle",
           align:'center',
       }, {
           field: 'age',
           title: '年龄',
           align:'center',
           colspan: 1,
           rowspan: 2,
           valign:"middle",
           align:'center',
       }, {
           field: 'sex',
           title: '性别',
           align:'center',
           colspan: 1,
           rowspan: 2,
           valign:"middle",
           formatter:function(value,row,index){
	   		    if (row.sex == '1') {//性别
	    			return '<i class=\"fa fa-mars\" title="男" style=\"color:#3c7ab7;font-size:15px;\" onclick="enable(\'' + row.uid + '\')"></i> ';
	    		} else {
	    			return '<i class=\"fa fa-venus\"  title="女" style=\"color:#3c7ab7;font-size:15px;\" onclick="disable(\'' + row.uid + '\')"></i> ';
	    		}
          }
       }, {
           field: 'state',
           align:'center',
           title: '状态',
           colspan: 1,
           rowspan: 2,
           valign:"middle",
           formatter:function(value,row,index){
        	   var funce='';
        	   var funcd='';
        	   if($("#user-effective").val()){//如果有权限则赋予点击事件
        		  funce='onclick="enable(\'' + row.uid + '\')"' 
        		  funcd='onclick="disable(\'' + row.uid + '\')"' 
        	   }
	   		    if (row.state == '0') {//失效
	    			return '<i class=\"fa fa-toggle-off text-info fa-2x\" title="点击修改" style=\"color:#3c7ab7;\"'+funce+'></i> ';
	    		} else {
	    			return '<i class=\"fa fa-toggle-on text-info fa-2x\"  title="点击修改" style=\"color:#3c7ab7;\"'+funcd+'></i> ';
	    		}
           }
       },{
           field: 'phone',
           title: '电话',
           colspan: 1,
           rowspan: 2,
           valign:"middle",
           align:'center',
       }, {
           field: 'email',
           title: '邮箱',
           colspan: 1,
           rowspan: 2,
           valign:"middle",
           align:'center',
       }, {
           title: "<span style='color:#3c7ab7;font-size: 15px;' class='fa fa-hand-lizard-o fa-lg'></span>",
           align: 'center',
           colspan: 2,
           rowspan: 1,
           valign:"middle",
       }],
	    [
		    {
		           title: '操作',
		           valign:"middle",
		           align:"center",
		           colspan: 1,
		           rowspan: 1,
		           formatter: function (value, row, index) {//这里的三个参数：value表示当前行当前列的值；row表示当前行的数据；index表示当前行的索引（从0开始）。
		               var html = "<a type='button' title='查看' onclick=showModal('" + row.uid +"|view"+ "')><span style='color:#3c7ab7;font-size: 15px;' class='glyphicon glyphicon-eye-open' aria-hidden='true' ></span ></a>&nbsp;&nbsp;&nbsp;"
		               if($("#user-edit").val()){
		               		html+="<a type='button' title='编辑' onclick=showModal('"+row.uid +"|edit"+"')><span style='color:#3c7ab7;font-size: 15px;' class='glyphicon glyphicon-edit' aria-hidden='true' ></span ></a>&nbsp;&nbsp;&nbsp;"
		               }
		               if($("#user-remove").val()){
		             	  	html+="<a type='button' title='删除' onclick=showModal('" + row.uid +"|remove"+ "')><span style='color:#3c7ab7;font-size: 15px;' class='glyphicon glyphicon-trash' aria-hidden='true' ></span ></a>&nbsp;&nbsp;&nbsp;";
		               }
		                return html;
		           }
		       },
		       {
		           title: '关注',
		           valign:"middle",
		           align:"center",
		           colspan: 1,
		           rowspan: 1,
		           formatter: function (value, row, index) {//这里的三个参数：value表示当前行当前列的值；row表示当前行的数据；index表示当前行的索引（从0开始）。
		                hl=null;
		                if(row.isFocus=='0'){
		             	   hl="<a type='button' title='关注' onclick=isfocus('"+row.uid+"')><span style='color:#3c7ab7;font-size: 16px;' class='glyphicon glyphicon-star-empty' aria-hidden='true' ></span ></a>"
		                }else{
		             	   hl="<a type='button' title='取关' onclick=nofocus('"+row.uid+"')><span style='color:#3c7ab7;font-size: 16px;' class='glyphicon glyphicon-star' aria-hidden='true' ></span ></a>"
		                }
		                return hl;
		            }
		       }
	       ]
       ],
        onEditableSave: function (field, row, oldValue, $el) {
            alert("更新保存事件，原始值为" + oldValue);
        },
        onCheck:function(row){
        },
        onUncheck:function(row){
        }
     });                 
});

//加载子表
var InitSubTable = function (index, row, $detail) {
    var cur_table = $detail.html('<table></table>').find('table');
    //子表的初始化和父表完全相同
    $(cur_table).bootstrapTable({
        url: '/user/getOtherInfo',
        method: 'get',
        queryParams: { uid: row.uid },
        clickToSelect: true,
		selectItemName: 'childItem'+index,
		checkboxHeader:false,
		showSearch:false,
        columns: [{
            field: 'role',
            title: '角色',
            align:'center'
        }, {
            field: 'post',
            title: '岗位',
            align:'center'
        }, {
            field: 'dept',
            title: '部门',
            align:'center'
        }],
        responseHandler: function (res) {	//结果集处理
        	var arr=res.data.info.split('|#|')
        	for(var i=0;i<arr.length;i++){
        		if(arr[i]=='0'){
        			arr[i]=null;
        		}
        	}
        	var data=[{'role':arr[0],'dept':arr[1],'post':arr[2]}]
            return eval(data);
        },
    });
};

//新增按钮点击事件
$("#btn_add").on('click', function () {
	//初始化两个下拉框宽度
	$("#did").selectpicker({width:162})
	$("#postId").selectpicker({width:265})
	
	$('#tb_user').bootstrapTable("resetView");
    //弹出模态框
    $("#addModal").modal();
    //设置表头
    $("#addModal").find('.modal-title').text('新增用户信息');
	$("input").removeAttr("disabled");//可编辑
	$("#did").removeAttr("disabled");
	$("#postId").removeAttr("disabled");
	$('#did').selectpicker('refresh');
	$('#postId').selectpicker('refresh');
    //新增、编辑、查看公用一个模态框。所以需要初始化清空表单
    $("#addUserForm")[0].reset();
    //重置岗位下拉框 否则会出现重复  无解
    if($("#addModal select[name='postId']")[0].options){//重置，否则出现重复
    	$("#addModal select[name='postId']")[0].options.length = 0;
    	$("#addModal select[name='postId']").selectpicker('refresh');
    }
    //重置部门下拉空间
    $("#addModal select[name='did']").selectpicker('refresh');
	//部门值初始化
	initSelect("did", "/dept/getAllDepts",'d');
});    
    
//批量删除事件
$("#btn_remove").on('click', function () {
	var rows=$('#tb_user').bootstrapTable("getSelections");
	if(rows.length<1){
		layer.msg("请至少选择一条记录");
		return;
	}
	var ids='';
	for(var i=0;i<rows.length;i++){
		if(ids==''){
			ids=rows[0].uid;
		}else{
			ids=ids+"|"+rows[i].uid;
		}
	}
	bootbox.setDefaults("locale","zh_CN");
	bootbox.confirm("确认删除？",function(rt){
		if(rt){
			$.post("/user/removeUsers",{"ids":ids},function(result){
				//刷新列表
				$('#tb_user').bootstrapTable('refresh');
			});
		}
	})
});            
            
    //按钮点击事件,查看/编辑/删除
    var showModal = function (obj) {
    	var param,id,type;
    	if(obj!=null&&obj!=""){
    		param=obj.split("|");
    		id=param[0];
    		type=param[1];
    	}
    	//删除
    	if(type=='remove'){
    		bootbox.setDefaults("locale","zh_CN");
    		bootbox.confirm("确认删除？",function(rt){
    			if(rt){
	    			$.post("/user/removeUsers",{"ids":id},function(result){
	    				//刷新列表
	    				$('#tb_user').bootstrapTable('refresh');
	    			});
    			}
    		})
    		return;
    	}
    	initSelect("did", "/dept/getAllDepts",'d');//初始化部门下拉框
        //根据当前行的id获取当前的行数据
        var row = $("#tb_user").bootstrapTable('getRowByUniqueId', id);
        //弹出模态框
        $("#addModal").modal();
        $("#addModal").find('.modal-title').text('编辑用户信息')
        //新增、编辑、查看公用一个模态框。所以需要初始化清空表单
        $("#addUserForm")[0].reset();
        if($("#addModal select[name='postId']")[0].options){//重置，否则出现重复
        	$("#addModal select[name='postId']")[0].options.length = 0;
        	$("#addModal select[name='postId']").selectpicker('refresh');
        }
        //给弹出框里面的各个文本框赋值
        $("#addModal input[name='username']").val(row.username);
        $("#addModal input[name='realname']").val(row.realname);
        $("#addModal input[name='age']").val(row.age);
        var radios = document.getElementsByName("sex");
        if (row.sex=='1') {
			radios[0].checked = true;
		} else {
			radios[1].checked = true;
		}
        //角色复选框反显
        var checkboxs = document.getElementsByName("roleIds");
        var values;
        if (row.roleIds.indexOf(",")!=-1) {
			values=row.roleIds.split(",");
		} else {
			values=[row.roleIds];
		}
        for(var c=0;c<checkboxs.length;c++){
        	if(values.indexOf(checkboxs[c].value)>=0) checkboxs[c].checked=true;
        }
        $("#userForm #sex").val(row.sex);
        $("#addModal input[name='phone']").val(row.phone);
        $("#addModal input[name='email']").val(row.email);
        $("#addModal input[name='uid']").val(id);
        $("#addModal input[name='aid']").val(row.avatar.id);
        $("#addModal select[name='did']").selectpicker('val',row.did);
        /*$("#addModal select[name='did']").selectpicker('refresh');*/
        initSelect('postId',"/post/getPostsByDeptId?deptId="+row.did,'p')
    	$("#addModal select[name='postId']").selectpicker('val',row.postId==null?"":row.postId.split(","));
        $("#addModal select[name='postId']").selectpicker('refresh');
    	picUrl=row.avatar.showPath;
        showBrowse=true;
        showRemove=true;
        if(type=='view'){
        	$("input").prop("disabled",true);
        	$("#did").prop("disabled",true);
        	$("#postId").prop("disabled",true);
        	$('#did').selectpicker('refresh');
        	$('#postId').selectpicker('refresh');
        	//查询框不能禁了撒
        	$("#srealname").prop("disabled",false);
        	$("#tree_key").prop("disabled",false);
        	$("#sage").prop("disabled",false);
        	$("#addClostBtn").removeAttr("disabled");
        	showBrowse=false;
        	showRemove=false;
        }else{
        	$("input").removeAttr("disabled");//可编辑
        	$("#did").removeAttr("disabled");
        	$("#postId").removeAttr("disabled");
        	$('#did').selectpicker('refresh');
        	$('#postId').selectpicker('refresh');
        }
        //先销毁对象，重新实例化
        $("#headPic").fileinput('destroy');  
        $("#headPic").fileinput({ 
        	language: 'zh', //设置语言
            allowedFileExtensions: ['jpg','png','jpeg','png'],//接收的文件后缀
            initialPreviewAsData: true, // 特别重要
            initialPreviewFileType: 'image',  
            initialPreview: picUrl , //要显示的图片的路径  
            showPreview:true,
            showBrowse:showBrowse,
            showRemove:showRemove,
            showCancel:true,
            showClose:false,
            showUpload: false, //是否显示上传按钮
            showCaption: true,//是否显示标题
            overwriteInitial:true,
            dropZoneEnabled: false,//是否显示拖拽区域
            maxImageWidth: 500,//图片的最大宽度
            maxImageHeight: 500,//图片的最大高度
            maxFileSize: 50,//单位为kb，如果为0表示不限制文件大小
            enctype: 'multipart/form-data',
            validateInitialCount: false,
            previewFileIcon: "<i class='glyphicon glyphicon-king'></i>",
            msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}！",
            fileActionSettings : {
                showUpload: false,
                showRemove: false,
                showZoom:false,
                showClose:false
            }
        })
    }
   
    //保存/编辑用户按钮提交数据
	$("#addUserBtn").click(function(){
		var url;
		if($("#uid").val()==""){
			url="/user/register"
		}else{
			url="/user/update"
		}
	   	var data = new FormData($("#addUserForm")[0]); 
		data.append("headPicture",$('#headPic')[0].files[0])//取文件对象
	    $.ajax({ 
		     type:'post',  
		     url:url, 
		     cache: false,    //上传文件不需缓存
		     processData: false, //需设置为false。因为data值是FormData对象，不需要对数据做处理
		     contentType: false, //需设置为false。因为是FormData对象，且已经声明了属性enctype="multipart/form-data"
		     data:data,  
		     //dataType:'json',后台用requestBody 
		     success:function(data){
	    	   	$("#addUserForm")[0].reset();
		    	$('#addModal').modal('hide');
		    	$('#tb_user').bootstrapTable('refresh'); 
		     },
	    })                   
	})
	
	
    //生效失效
    function clickbtn(e){
    	//获取选中行数据
    	var rows=$('#tb_user').bootstrapTable("getSelections");
    	if(rows.length==0){
    		layer.msg("请至少选择一条记录");
    	}else{
    		var state;
    		var ids;
    		for(var i=0;i<rows.length;i++){
    			if(i==0){
    				state=rows[0].state
    				ids=rows[0].uid;
    			}else{
    				ids=ids+','+rows[i].uid;
    				if(rows[i].state!=state){
    					layer.msg("多条记录状态不一致!");
    					return;
    				}
    			}
    		}
    		if(e=='e'&&state=='1'){
    			layer.msg("记录已是有效状态!");
    			return;
    		}
    		if(e=='i'&&state=='0'){
    			layer.msg("记录已是失效状态!");
    			return;
    		}
            $.ajax({
                type: 'post',
                url: "/user/effectiveOrinvalid",
                data: {ids:ids,type:e},
                dataType:'json',
                success: function (result) {
                	if(result.success){
                		$('#tb_user').bootstrapTable('refresh');  
                    }
                }
            });
    	}
    	
    }
    
    //单个生效
    function enable(uid){
        $.ajax({
            type: 'post',
            url: "/user/effectiveOrinvalid",
            data: {ids:uid,type:'e'},
            dataType:'json',
            success: function (result) {
            	if(result.success){
            		$('#tb_user').bootstrapTable('refresh');  
                }
            }
        });
    }
    //单个失效
    function disable(uid){
        $.ajax({
            type: 'post',
            url: "/user/effectiveOrinvalid",
            data: {ids:uid,type:'i'},
            dataType:'json',
            success: function (result) {
            	if(result.success){
            		$('#tb_user').bootstrapTable('refresh');  
                }
            }
        });
    }	
    //关注
    function isfocus(uid){
        $.ajax({
            type: 'post',
            url: "/user/focusUser",
            data: {id:uid,type:'Y'},
            dataType:'json',
            success: function (result) {
            	if(result.success){
            		$('#tb_user').bootstrapTable('refresh');  
                }
            }
        });
    }
    //取消关注
    function nofocus(uid){
        $.ajax({
            type: 'post',
            url: "/user/focusUser",
            data: {id:uid,type:'N'},
            dataType:'json',
            success: function (result) {
            	if(result.success){
            		$('#tb_user').bootstrapTable('refresh');  
                }
            }
        });
    } 


    
   //初始化复选框组
    function initCheckbox(){
    	$.ajax({
            type: 'get',
            url: "/role/list",
            dataType:'json',
            success: function (result) {
            	if(result.success){
            		var rt=result.data.data;
            		var htmlStr="";
            		var label1='<label class="checkbox-inline">';
            		var label2='</label>';
            		for(var i=0;i<rt.length;i++){
            			htmlStr=htmlStr+label1+'<input type="checkbox" name="roleIds" id="checkbox'+(i+1)+'" value="'+rt[i].rid+'">'+rt[i].roleName+label2
            		}
            		$("#checkboxDiv").html(htmlStr)
                }
            }
        });
    }
    
    function importUser(){
    	//导入用户：文件上传
    	bootbox.setDefaults("locale","zh_CN");
    	bootbox.confirm({
    		title: "<span style='color:red;font-size:16px;'>请选择导入的Excel文件:</span>", 
    		message:
    			"<form id='excelForm' enctype='multipart/form-data' method='post' action='importExcel'>\
    		    	<input type='file' name='excelName' />\
    			</form>", 
    		callback:function(result) {
    			if(result){
    				$('#excelForm').submit();
    			}
    		}
    	});
    }  
    
    /*    	bootbox.prompt({ 
	size: "small",
	title: "请选择导入的Excel文件", 
	inputType:"file",
	callback: function(file){
		debugger;
	}
})*/
/******************************************deptmentTree*************************************************/
	var setting = {
		view: {
			addDiyDom: addDiyDom, //自定义
			addHoverDom: addHoverDom,
			removeHoverDom: removeHoverDom,
			selectedMulti: false,
			//fontCss: getFontCss
		},
		check: {
			enable: false
		},
		data: {
            key: {
                children: "childs",
                name: "deptName",
            },
			simpleData: {
				enable: true,
                idKey: "deptId",
                pIdKey: "parentId", 
                rootPId:null
			}
		},
		edit: {
			enable: true
		},callback: {
            //beforeRemove: beforeRemove,  //移除前
            //beforeRename: beforeRename,   //重命名前
            onRemove: onRemove,
            onRename: onRename,
            //beforeDrag:beforeDrag,
            onClick: onNodeClick, //注册节点的点击事件
            beforeDrag: beforeDrag,//拖拽之前判断
            beforeDrop: beforeDrop,//拖拽之后保存更新
            onDrop:onDrop//拖拽后更新
        }
	};


	function initDeptTree(){
		$.ajax({
	        url: "/dept/getAllDepts",
	        cache: false,
	        async: false,
	        dataType: 'json',
	        success: function (result) {
		        if(result.success){
		        datas=result.data;
		        for (var i=0;i<datas.length;i++){
		        	datas[i].iconOpen='/static/bootstrap/zTree/img/open.png';
		        	datas[i].iconClose='/static/bootstrap/zTree/img/close.png';
		        	datas[i].icon='/static/bootstrap/zTree/img/house.png';
		        }
				$(document).ready(function(){
					$.fn.zTree.init($("#deptTree"),setting,datas).expandAll(true);
				});
		        }
	        }
		});    
	}        

 	var newCount = 1;
	function addHoverDom(treeId, treeNode) {
		var sObj = $("#" + treeNode.tId + "_span");
		if (treeNode.editNameFlag || $("#"+treeNode.tId+"_add").length>0) return;
		var addStr = "<span class='button add' id='" + treeNode.tId
			+ "_add' title='add' onfocus='this.blur();'></span>";
		sObj.after(addStr);
		var btn = $("#"+treeNode.tId+"_add");//新增按钮
		if(!$("#dept-crud").val()){//部门权限控制
			$("#"+treeNode.tId+"_add").hide();
			$("#"+treeNode.tId+"_edit").hide();
			$("#"+treeNode.tId+"_remove").hide();
		}
		if(treeNode.deptId=='0'){//根节点不可编辑删除
			$("#"+treeNode.tId+"_edit").hide();
			$("#"+treeNode.tId+"_remove").hide();
		}
		if(treeNode.level=='3'){//不能超过四级
			$("#"+treeNode.tId+"_add").hide();
		}
		//点击添加按钮
		if (btn) btn.bind("click", function(){
			var zTree = $.fn.zTree.getZTreeObj("deptTree");
			var nowNode;
			var data={
				"deptName":"新部门",	
				"leader":"admin",	
				"phone":"110",	
				"status":"0",	
				"email":"110@qq.com",
				"parentId":treeNode.deptId,
				"ancestors":treeNode.ancestors+","+treeNode.deptId,
				"orderNum":treeNode.isParent?treeNode.childs.length+1:1,
				"delFlag": "0"
			}
			$.ajax({
                type: 'post',
                url: "/dept/addDept",
                data: data,
                timeout: 1000, //超时时间设置，单位毫秒
                dataType: 'json',
                success: function (res) {
                    if (res.success) {
                        var newId = res.data;
                        data.deptId=newId;
                        //在树节点上增加节点
                        newNode = zTree.addNodes(treeNode, data);
                        zTree.editName(newNode[0]) //新增的节点进入编辑状态
                    }
                }
            });
            return false;
		});
	};
	
	function removeHoverDom(treeId, treeNode) {
		$("#"+treeNode.tId+"_add").unbind().remove();
	};
 

		//修改节点信息
    function onRename(event, treeId, treeNode) {
        var zTree = $.fn.zTree.getZTreeObj("deptTree");
        //发送请求修改节点信息
        var data = {
        	"deptName":treeNode.deptName,	
            "deptId": treeNode.deptId,
        };
        $.ajax({
            type: 'post',
            url: "/dept/updateDept",
            data: data,
            timeout: 1000, //超时时间设置，单位毫秒
            dataType: 'json',
            success: function (result) {
            	if(result.success){
            	initDeptTree();
            	}
            }
        });
    }
	
    //删除之前的判断
    function onRemove(event, treeId, treeNode) {
        if(treeNode.isParent){
            layer.alert('该节点下有子节点，不能删除');
            return false;
        }
        layer.confirm('删除该部门？',{title:"确认"},function(rt){
	            $.ajax({
	                type: 'get',
	                url: "/dept/deleteDept",
	                data: {"deptId":treeNode.deptId},
	                timeout: 1000, //超时时间设置，单位毫秒
	                dataType: 'json',
	                success: function (result) {
	                	if(result.success){
	                    	initDeptTree();
	                    	layer.close(rt);
	                    }
	                }
	            });
        },function(index){
        	layer.close(index);
        	initDeptTree();
        });
    }
    
  //当点击节点
    function onNodeClick(event, treeId, treeNode) {
		$("#deptId").val(treeNode.deptId);  //这两个是上面模糊查询input的值
    	$('#tb_user').bootstrapTable('refresh');  
    }
//拖拽前后
    function beforeDrag(treeId, treeNodes){
        if (treeNodes[0].deptId =='0') {//根节点不可
            return false;
        }
        return true;
    }
    function beforeDrop(treeId, moveNodes, treeNode,moveType){
    	if(moveNodes[0].parentId!=treeNode.parentId||moveType=='inner'){
    		layer.msg("只允许同级之间拖拽");
    		return false;
    	}
    	return true;
    }
    
    function onDrop(event,treeId, moveNodes, treeNode,moveType) {
    	moveNode=moveNodes[0];
    	//根据目标节点和移动类型(上下)得到新的排序号
    	var sortNum=treeNode.orderNum;
    	var newNum=null;
    	if(moveType=='next'){//目标节点下一个
    		newNum=parseInt(sortNum)+0.5//会传到后台重新排序
    	}else if(moveType=='prev'){//目标节点上一个
    		newNum=parseInt(sortNum)-0.5//会传到后台重新排序
    	}
    	moveNode.orderNum=newNum;
    	$.ajax({
    		url:"/dept/dragAnddrop",
    		type: 'post',
    		dataType:"json",
    		data:moveNode,
    		success:function(result){
    			$("#addBtn_"+moveNode.tId).unbind().remove();
    		}
    	})
    }
    //部门树模糊查询
    function onNamechange(){
    	//获取条件输入框
    	var value=$("#tree_key").val();
    	var zTree = $.fn.zTree.getZTreeObj("deptTree");
    	if(value==""||value==null){
    		initDeptTree();//初始化机构树
    	}else{
    		nodeList = zTree.getNodesByFilter(filterFunc);
            //nodeList = zTree.transformToArray(nodeList);//得到子节点！！！！！不需要
            for (var n in nodeList) {
                if (nodeList.hasOwnProperty(n)) {
                    findParent(zTree, nodeList[n]);//需要展示父节点
                }
            }
            zTree.hideNodes(zTree.transformToArray(zTree.getNodes()));//先隐藏所有
            zTree.showNodes(nodeList);//在显示匹配节点以及匹配的父节点
    	}       	
    }

   
    function filterFunc(node) {
    	var zTree = $.fn.zTree.getZTreeObj("deptTree");
        var keywords = $("#tree_key").val();
        if (node.deptName.indexOf(keywords)!=-1) {
        	$("#" + node.tId + "_span").css({'-webkit-box-shadow':' 0 0 3px #286090','border-radius':'3px'});//高亮
        	zTree.updateNode(node);
        	return true;
        }
        return false;
    };
    
    
    
    function findParent(treeObj, node) {
        treeObj.expandNode(node, true, false, false);
        var pNode = node.getParentNode();
        if (pNode != null) {
            nodeList.push(pNode);
            findParent(treeObj, pNode);
        }
    };
    //自定义:超长显示省略号
    function addDiyDom(treeId, treeNode) {
    	var text=$("#" + treeNode.tId + "_span");
        var spantxt = text.html();
        if (spantxt.length > 10) {
            spantxt = spantxt.substring(0, 8) + "..."; //最多显示15个字
            $("#" + treeNode.tId + "_span").html(spantxt);
        }
   }
    

